package design_pattern.singleton;


//懒汉式单例类.在第一次调用的时候实例化自己   
public class Singleton {  
    private Singleton() {}  
    private static Singleton single=null;  
//    //静态工厂方法   
//    public static Singleton getInstance() {  
//         if (single == null) {    
//             single = new Singleton();  
//         }    
//         return single;  
//     } 
//
//	//1、在getInstance方法上加同步
//	public static synchronized Singleton getInstance() {  
//         if (single == null) {    
//             single = new Singleton();  
//         }    
//         return single;  
//	}  
//
	//2、双重检查锁定
	public static Singleton getInstance() {  
        if (single == null) {    
            synchronized (Singleton.class) {    
               if (single == null) {    
            	   single = new Singleton();   
               }    
            }    
        }    
        return single;   
	}  
//
//	//3、静态内部类
//    private static class LazyHolder {    
//	       private static final Singleton INSTANCE = new Singleton();    
//	}    
//    public static final Singleton getInstance() {    
//       return LazyHolder.INSTANCE;    
//    }  
//    
//  
//    //饿汉
//    private static final Singleton1 single = new Singleton();  
//    //静态工厂方法   
//    public static Singleton getInstance() {  
//        return single;  
//    } 


 } 

